import 'package:enjoy_plus_hm/utils/eventBus.dart';
import 'package:enjoy_plus_hm/utils/token.dart';
import 'package:flutter/material.dart';
import 'package:enjoy_plus_hm/pages/home/index.dart';
import 'package:enjoy_plus_hm/pages/mine/index.dart';

class TabBarPage extends StatefulWidget {
  const TabBarPage({super.key});

  @override
  State<TabBarPage> createState() => _TabBarPageState();
}

class _TabBarPageState extends State<TabBarPage> {
  // 记录当前索引-默认选择第一个
  int currentIndex = 0;

  // 底部TabBar数据-方便动态添加
  List tabBarList = [
    {
      "title": "首页",
      "default": "assets/tabs/home_default.png",
      "active": "assets/tabs/home_active.png"
    },
    {
      "title": "我的",
      "default": "assets/tabs/my_default.png",
      "active": "assets/tabs/my_active.png"
    }
  ];

  @override
  void initState() {
    super.initState();
    // 初始化token
    Future.delayed(Duration.zero, () async {
      await TokenManager().init();
      print(TokenManager().getToken());
    });
    // 注册token失效后跳转登录页的通知接收--监听LogoutEvent
    // eventBus.fire(LogoutEvent('请重新登录'));
    eventBus.on<LogoutEvent>().listen((event) {
      // 跳转登录页面
      Navigator.pushNamed(context, '/login');
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      // 安全区域 SafeArea
      body: SafeArea(
        // 根据索引切换，多个页面切换
        child: IndexedStack(
          // tabbar的索引值
          index: currentIndex,
          // 切换的页面
          children: [
            HomePage(),
            // 因为Mine页面是放在TabBarPage中, 默认情况下项目一启动Mine页面的生命周期钩子函数就会被执行掉, 所以不能在initState中发送网络请求, 而是需要当用户进入到我的页面时才发送请求
            MinePage(
              currentIndex: currentIndex,
            )
          ],
        ),
      ),
      // 底部导航条，显示在页面下方
      bottomNavigationBar: BottomNavigationBar(
        type: BottomNavigationBarType.fixed,
        // items 类型 BottomNavigationBarItem  barItemList()
        items: barItemList(),
        // 选中索引
        currentIndex: currentIndex,
        selectedItemColor: const Color.fromARGB(255, 85, 145, 175),
        unselectedItemColor: Colors.black,
        // 切换事件
        onTap: (index) {
          // 刷新数据
          setState(() {
            currentIndex = index;
          });
        },
      ),
    );
  }

  // 提供一个底部导航条的item
  List<BottomNavigationBarItem> barItemList() {
    // 定义数组
    List<BottomNavigationBarItem> items = [];
    // 遍历生成数组
    for (var item in tabBarList) {
      items.add(
        BottomNavigationBarItem(
            // 默认选中的图片
            icon: Image.asset(
              item['default'],
              width: 32,
              height: 32,
            ),
            // 点击选中的图片
            activeIcon: Image.asset(
              item['active'],
              width: 32,
              height: 32,
            ),
            // 定义底部导航栏项目的文本标签
            label: item['title']),
      );
    }
    // 输出数组
    return items;
  }
}
